FIG. 1 shows n queues 1010 through 101n−1. If the output traffic from each of the n queues 1010 through 101n−1 is designed to flow through a channel 102 having a limited amount of bandwidth resources, in typical applications, the simultaneous emission of output traffic from each of the n queues 1010 through 101n−1 “overloads” the bandwidth resources of the channel 102. That is, more traffic is offered to the channel 102 than it can handle. In order to prevent the overload of the channel 102, the total output traffic from all of the queues 1010 through 101n−1 i is throttled back causing traffic to build up within the queues 1010 through 101n−1. 
As such, the queues 1010 through 101n−1 may be said to “contend” for the bandwidth resources of the channel 102—in the sense that their traffic build-up causes them to desire the use of the channel 102. In order to implement the throttling back of total traffic from all of the queues 1010 through 101n−1, for example, one of the queues may be given permission (i.e., a “grant”) to release a flow of output traffic while some or all of the other queues are forced to hold theirs.
By distributing these grants to the queues 1010 through 101n−1 in a fair manner, each queue will eventually be given a grant to release its output traffic. As such, the total flow of traffic from all of the queues 1010 through 101n−1 is throttled back (e.g., so as to be commensurate with the bandwidth of the channel 102) and each of the queues 1010 through 101n−1 has an opportunity to transmit. This corresponds to a fair resolution of the contention for the resources of the channel 102.
A technique referred to as “round robin” may be used to implement a fair resolution for the contention of resources. In a round robin approach, queues are issued grants in a cyclical fashion. That is, for example, if each of the n queues 1010 through 101n−1 has traffic to release: queue 1010 is given a first grant; queue 1011 is given a second grant; . . . ; queue 101n−1 is given an nth grant; queue 1010 is given an (n+1)th grant; queue 1011 is given an (n+2)th grant; . . . ; queue 101n−1 is given a (2n)th grant; etc.,.
If a queue is “empty” (i.e., does not have traffic to send) when its turn arises to receive a grant, the robin robin mechanism “skips over” the empty queue and issues the next grant to the next queue in the cycle having traffic to release. For example, if queue 1011 is empty after queue 1010 is given a grant, queue 1012 is given the “next” grant (after the grant given to queue 1010) if queue 1012 has traffic to release. If queue 1012 does not have traffic to release, queue 1013 (not shown in FIG. 1) is given the “next” grant if it has traffic to release, etc.
Note that the round robin mechanism may be applied to resource contentions generally. That is, applications other than a group of queues 1010 through 101n−1 that collectively feed a common channel 102 (as seen in FIG. 1) may implement a round robin scheme. For example, common applications of round robin schemes include (among others) the granting of switching or routing resources (e.g., to streams of traffic within a network or networking system), the granting of processing resources (e.g., to applications or clients that use a computing system), etc. Regardless as to the exact environment where a round robin scheme is implemented, the element(s) that contend with one another for a resource (e.g., queues, traffic streams, software applications, client devices) may be referred to in a general way as the “requesting agent(s)”.
A problem with round robin schemes, however, is their complexity as the number of contenders “n” (e.g., the n queues 1010 through 101n−1 observed in FIG. 1) increases. As n increases, the round robin controlling mechanism has to “keep track of” more contentions and grants which results in complex and inefficient round robin design implementations.